package br.com.toscano.gobra.business;

import javax.inject.Inject;

import br.com.toscano.automacao.constant.ConstantesMensagem;
import br.com.toscano.automacao.exception.DescricaoException;
import br.com.toscano.gobra.domain.UnidadeMedida;
import br.com.toscano.gobra.persistence.UnidadeMedidaDAO;
import br.gov.frameworkdemoiselle.stereotype.BusinessController;
import br.gov.frameworkdemoiselle.util.ResourceBundle;

@BusinessController
public class UnidadeMedidaBC extends AbstractBC<UnidadeMedida, Long, UnidadeMedidaDAO> {
	
	private static final long serialVersionUID = 1L;

	@Inject
	private ResourceBundle bundle;

	
	public UnidadeMedida consultarPorDescricao(String descricao) {
		return this.getDelegate().consultarPorDescricao("sigla" , descricao);
	}

	@Override
	public UnidadeMedida insert(UnidadeMedida bean) {
		UnidadeMedida UnidadeMedida = this.getDelegate().consultarPorDescricao("sigla" , bean.getSigla());
		if (UnidadeMedida != null) {
			throw new DescricaoException(bundle.getString(ConstantesMensagem.MSG_ERRO_DESCRICAO_JA_USADA, "Sigla"));
		} else {
			return super.insert(bean);
		}
	}

	@Override
	public UnidadeMedida update(UnidadeMedida bean) {
		UnidadeMedida UnidadeMedida = this.getDelegate().consultarPorDescricao("sigla" , bean.getSigla());
		if (UnidadeMedida != null  && !UnidadeMedida.getKey().equals(bean.getKey())) {
			throw new DescricaoException(bundle.getString(ConstantesMensagem.MSG_ERRO_DESCRICAO_JA_USADA, "Sigla"));
		} else {
			return super.update(bean);
		}
	}

}

